/**
  ******************************************************************************
  * @file           : rpc_client.h
  * @author         : chyang
  * @brief          : None
  * @attention      : None
  * @date           : 2024/3/13
  ******************************************************************************
*/
#ifndef CPLUS_CLIENT_RPC_CLIENT_H
#define CPLUS_CLIENT_RPC_CLIENT_H

#pragma once

#include <iostream>
#include <grpc++/client_context.h>
#include <grpc++/channel.h>
#include <grpc++/create_channel.h>
#include "opencv2/opencv.hpp"
#include <thread>
#include <grpc++/support/time.h>
#include "data.grpc.pb.h"
#include "data.pb.h"
#include "base_64.h"

using grpc::Channel;
using grpc::ClientContext;
using grpc::ClientReaderWriter;

//自己定义的一个结构体，用于给调用者使用的。这里演示了传输图片。res_img调用者传入，然后结果也保存到这里
typedef struct Rpc_Result {
    cv::Mat res_img;
    std::string res_text;
    std::string info;
} RResult;

class OcrRec {

public:

    OcrRec(std::string IpAndPort);

    bool RunOcr(RResult &res);

private:
    std::unique_ptr<data::Stub> stu_;
};

#endif //CPLUS_CLIENT_RPC_CLIENT_H
